\section{Conclusion}
A travers la réalisation de ce compilateur, nous avons pu appliquer
nos connaissances sur l'analyse sémantique et comprendre certaines
problématiques liées à la compilation: telle que l'analyse de type. La
gestion des classes aurait pu être implémentée en rendant notre
tableau de type dynamique et en ajoutant chaque nouvelle classe
rencontrée à ce tableau.  Une structure contenant les variables
d'instance aurait pu être déclarée. Cette structure aurait été
composée de l'ensemble des variables d'instance et des pointeurs vers
les méthodes de cette instance. Au niveau des fonctions récursives il
aurait fallu ajouter la fonction à la pile des fonctions avant de
faire l'analyse de type sur le corps de la fonction et l'enlever si
jamais il y avait eu une erreur de typage. Pour la définition des
fonctions ne retournant rien il aurait fallu rajouter une instruction
ret void à la fin de la fonction. Au niveau de la gestion des erreurs
nous aurions pu sauvegarder les numéros des lignes dans les noeud de
l'arbre afin de pouvoir renvoyer le numéro de la ligne lors de la
détection d'une erreur.
